從延遲的角度來看,VR 技術(shù)是一項最需要「人在環(huán)中(human-in-loop)」的應(yīng)用。對于高質(zhì)量的 VR 體驗而言,最重要的是用戶頭部物理移動與 HMD 上實時刷新圖像到達用戶眼睛之間的延遲時間。人類的感官系統(tǒng)在一定范圍內(nèi)能感知到視覺和聽覺中相對較小的延遲,但是當(dāng)絕對延遲控制大約 20ms 以內(nèi)的時候,這些延遲幾乎就不可察覺了。目前互動式的 3D 系統(tǒng)造成的延遲要比這個數(shù)字高上幾倍,但如果不斷調(diào)試同一組硬件的話我們終究會滿足要求。
——John Carmack
延遲問題是 Oculus VR 所面對的主要問題,當(dāng)然這也是 VR 整體需要解決主要問題。延遲能夠影響沉浸式體驗,也能夠造成玩家的嘔吐和不適應(yīng),所以找出造成這一問題的所在和解決方法是十分重要的。
為什么會有延遲?
整個系統(tǒng)的延遲控制在 50ms 就會感覺相對不錯,但還是能感覺到。當(dāng)延遲低于 20ms,人就無法感知出來了,這可以說是 VR 最佳體驗的標(biāo)準(zhǔn)。
信號傳遞有延遲
預(yù)測傳感器數(shù)據(jù)可以被用于減緩一些系統(tǒng)延遲,但即使是最精準(zhǔn)的人類頭部移動模型,在用戶實際使用的時候,還是會有預(yù)測不準(zhǔn)的時候。

濾波和通訊所帶來的延遲是持續(xù)存在的,但大多數(shù)傳感器不同步的刷新會引入了一個可變延遲,或者說當(dāng)渲染的幀率與傳感器的刷新率不同的時候,也會造成延遲的不規(guī)律波動。
屏幕刷新有延遲
早期的 LCD 屏幕在畫面滾動和變化的時候,因會有幾十毫秒的殘影而飽受詬病,但在過去二十年里,這一技術(shù)有了長足的進步。LCD 每一個像素點的轉(zhuǎn)換時間取決于色彩變化的程度,一塊優(yōu)秀的面板的轉(zhuǎn)換時間能控制在大約 10ms 之內(nèi),而為 3D 顯示和游戲而優(yōu)化過的顯示器能減少一半左右的切換時間。
一些不常見的顯示技術(shù)比 LCD 面板的刷新速度更高;OLED 子像素的刷新時間低于 1ms,而激光顯示屏和 CRT 反應(yīng)一樣及時。

另一個不易察覺的延遲是:大多數(shù)顯示器是逐行顯示圖像的,而顯示器的圖像是從計算機里讀取的,但由于計算機自身的原因,會導(dǎo)致幀率為 60fps 顯示器上,屏幕底部的畫面要比頂部的刷新時間慢 16ms 左右。
在靜止的屏幕上,這根本算不上問題。然而在 HMD 里,因為源圖像是即時渲染出的,但不同的部分顯示在屏幕上的時間是不同的,所以它可能造成圖像的左邊或右邊被裁剪掉;或轉(zhuǎn)動頭部時,圖像出現(xiàn)晃動。這個效應(yīng)在使用 LCD 屏幕的 HMD 上不易察覺,但在刷新更快的 OLED 屏幕的 HMD 上卻更容易顯現(xiàn)出來。
如何降低延遲?
雙 GPU 立體渲染可降延遲
立體渲染降低延遲的一個誘人的解決方案是:將圖形處理系統(tǒng)分拆成兩個,并分別配備一個 GPU,每個 GPU 只需單獨渲染一只眼睛的圖像,這樣可以達到最佳的性能表現(xiàn)和最低的延遲,其代價是要求設(shè)備能夠管理兩個相互獨立的渲染內(nèi)容的緩存。
但它的問題是如果設(shè)備無法維持兩個 GPU 的緩存,設(shè)備的數(shù)據(jù)吞吐性能會下降,在緩存過載的情況下,還會導(dǎo)致幀率更嚴重地下降。
合理安排數(shù)據(jù)采樣
大多數(shù)模擬輸入的任務(wù)不直接依賴于用戶的輸入數(shù)據(jù),換而言之,這一數(shù)據(jù)的輸入對一幀的延遲并不敏感。如果在需要用戶輸入的數(shù)據(jù)時采樣,而不是在一開始就離線緩存輸入數(shù)據(jù),則能減少總體的延遲。(這種方法被稱之為 late frame scheduling,延遲幀調(diào)度)



